package com.zenithmind.article.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.zenithmind.article.pojo.domain.Article;
import com.zenithmind.article.pojo.query.ArticleQuery;
import com.zenithmind.article.pojo.vo.ArticleVO;
import com.zenithmind.common.result.PageResult;

import java.util.List;

/**
 * 文章基础服务接口
 * 遵循接口隔离原则：只包含文章核心CRUD操作
 * 遵循单一职责原则：专注于文章基础管理
 */
public interface ArticleService extends IService<Article> {

    /**
     * 添加或更新文章
     */
    Article addOrUpdateArticle(Article article);

    /**
     * 分页查询文章
     */
    PageResult<ArticleVO> pageArticle(ArticleQuery articleQuery);

    /**
     * 根据ID获取文章详情
     */
    ArticleVO getArticleById(String id);

    /**
     * 发布文章
     */
    Boolean publishArticle(String id);

    /**
     * 下架文章
     */
    Boolean unpublishArticle(String id);

    /**
     * 更新文章状态
     */
    Boolean updateArticleStatus(String id, String status);

    /**
     * 获取用户文章数量
     */
    Long getArticleCountByUserId();

    /**
     * 获取总浏览量
     */
    Long countView();
}
